package Analizadores.Estructuras;
import java.util.Map;

import Analizadores.AnalizadorSintactico.Tipos;
import Analizadores.Estructuras.Tipos.RegistroTS;

//tabla de simbolos para llevar el control de las variables y su informacion
public class TablaSimbolos {
//*************************************************************************************************	
	private Map<String,RegistroTS> ts;//hash map con clave string y valor de tipo RegistroTS
//*************************************************************************************************
	//constructora
	public TablaSimbolos(Map<String, RegistroTS> ts) {
        this.ts = ts;
    }
//-------------------------------------------------------------------------------------------------
    //devuelve la tabla entera
	public Map<String, RegistroTS> dameTS() {
        return ts;
    }
//-------------------------------------------------------------------------------------------------	
	//metodo para añadir un campo a la tabla, si ya existe devuelve null ya que no puede haber duplicados
	public Map<String, RegistroTS> anadeId(String id, RegistroTS reg) {
		if(existeId(id)) {
			return null;
		}
		else {
			ts.put(id, reg);
			return ts;
		}
	}
//-------------------------------------------------------------------------------------------------	
	//metodo para conocer si existe ese id ya en la tabla
	public boolean existeId(String id) {
		return (ts.containsKey(id));
	}
//-------------------------------------------------------------------------------------------------	
	//getter de tipo dado su id
	public Tipos tipoDe(String id) {
		return ts.get(id).dameTipo();
	}
//-------------------------------------------------------------------------------------------------	
	//getter de direccion dado su id
	public int dirDe(String id) {
		return ts.get(id).dameDir();
	}
//*************************************************************************************************
}
